module ImportExport private def export_data initialize_job(true) end def import_data(uploader, owner) return render_bad_import_request('Please upload a file to import.') if uploaded_file_blank? begin data = read_import_file(uploader, owner) rescue Exception render_bad_import_request('Wrong file type or content.') else initialize_job(false, data) end end def uploaded_file_blank? params[:upload].blank? || params[:upload][:datafile].blank? end def render_bad_import_request(errors) respond_to { |format| format.json { render json: { 'upload.datafile' => [errors] }, status: :bad_request } } end # Initialize a background task to handle the actual import / export of data def initialize_job(export_job, data = nil) @job_id = export_job ? start_export_job : start_import_job(data) handle_import_export_response end def handle_import_export_response @result = { job_type: 'instant', job_id: @job_id, status_url: report_runner_status_path(job_id: @job_id) } respond_to { |format| format.json { render json: @result } } end end